Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Battleground Queue


Rekomendowane odpowiedzi

Opublikowano

Cześć! Chciałbym wam dzisiaj przedstawić, system kolejek do bitew między graczami na mapie PvP - battlegroundy, pomysł zaczerpnięty z WoWa (; Jak z obydwóch królestw(Shinsoo i Jinno), zapisze się po 10 graczy, wszyscy są teleportowani na mapę, gdzie się biją i zdobywają punkty. Nie daje wam całości, tzn. strony klientowej, bo wszędzie trzeba trochę pomyśleć, żeby coś zrobić fajnie.

 

P.S aby to zadziałało, dodajecie sobie funkcje w game.py, która zapisuje w constInfo index questa, i w funkcji w game.py:

 

    def BINARY_SetTipMessage(self, message):
        if message[1] == "B" and message[2] == "G":
            import event
            import constInfo
            event.QuestButtonClick(int(constInfo.QUESTNAMEINDEX))
            self.interface.tipBoard.SetTip(message)      
            return
        self.interface.tipBoard.SetTip(message)        

Baza:

CREATE database th7nder;
DROP TABLE IF EXISTS `th7nder`.`battleground_queue`;
CREATE TABLE `th7nder`.`battleground_queue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `playerName` varchar(255) DEFAULT NULL,
  `playerLevel` int(255) DEFAULT NULL,
  `kingdom` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

Quest:

 

quest bgImpv begin
    state start begin
        function clearBG()
            query("DELETE FROM th7nder.battleground_queue;")
            game.set_event_flag("isBgStarted", 0)
            game.set_event_flag("isTimerStarted", 0)
            game.set_event_flag("isBgQueueFull1", 0)
            game.set_event_flag("isBgQueueFull3", 0)
            pc.setqf("isQueued", 0)
            notice_all("Battleground został zakończony!")
            warp_all_to_village()
        end
        
        function deletePlayer()
            local deleteQuery = query("DELETE FROM th7nder.battleground_queue WHERE playerName='"..pc.get_name().."';")
            local checkIsFull = query("SELECT count(id) as zapisani FROM th7nder.battleground_queue WHERE kingdom='"..pc.get_empire().."';")
            pc.setqf("isQueued", 0)
            say("Zostałeś wypisany!")
            if checkIsFull == 0 then
                game.set_event_flag("isBgQueueFull"..pc.get_empire(), 0)
                if game.get_event_flag("isBgQueueFull1") == 0 and game.get_event_flag("isBgQueueFull3") == 0 then
                    clear_server_timer("bgEnd", get_server_timer_arg())
                end
            end
        end
        
        function checkBG()
            
            if pc.getqf("isQueued") == 1 then
                say("Jesteś już zapisany!")
                return
            end
            if game.get_event_flag("isBgStarted") == 1 then
                say("Battleground w toku!")
                return
            end
            
            if game.get_event_flag("isBgQueueFull"..pc.get_empire()) == 1 then
                say("Kolejka jest pełna, przyjdź później!")
                return
            end
            
        end
        
        function addPlayer()
            local addPlayerQuery = query("INSERT INTO th7nder.battleground_queue (playerName, playerLevel, kingdom) VALUES ('"..pc.get_name().."', '"..pc.get_level().."', '"..pc.get_empire().."');")
            local checkIsFull = query("SELECT count(id) as zapisani FROM th7nder.battleground_queue WHERE kingdom='"..pc.get_empire().."';")
            notice_all("add player"..checkIsFull)
            pc.setqf("isQueued", 1)
            if checkIsFull == 10 then
                game.set_event_flag("isBgQueueFull"..pc.get_empire(), 1)
            end
        end
        
----------------------------------------------------------------------------------------------------------------------------------------------------------------------        
        when login begin
            cmdchat("bgSystem "..q.getcurrentquestindex())
            if pc.get_map_index() == 300 and game.get_event_flag("isBgStarted") == 1 then
                if game.get_event_flag("isTimerStarted") == 0 then
                    game.set_event_flag("isTimerStarted", 1)
                    server_timer("bgEnd", 1*60, pc.get_map_index())
                end
            end
        end
        
        when logout with pc.get_map_index() == 300 and game.get_event_flag("isBgStarted") == 1 begin
            bgImpv.deletePlayer()
        end
        
        when bgEnd.server_timer begin
            bgImpv.clearBG()
        end
        
        when 20093.chat."Zapisz na BG!" begin
            -- Jeśli nie jest zapisany
            if pc.getqf("isQueued") == 0 and game.get_event_flag("isBgQueueFull"..pc.get_empire()) == 0 then
                bgImpv.checkBG()
                bgImpv.addPlayer()
                say("Zostałeś zapisany!")
                
                if game.get_event_flag("isBgQueueFull1") == 1 and game.get_event_flag("isBgQueueFull3") == 1 then
                    game.set_event_flag("isBgStarted", 1)
                    notice_all("Kolejki na battleground zostały wypełnione!")
                    notice_all("BG zostało rozpoczęte!")
                end
                -- jeśli jest zapisany
            elseif pc.getqf("isQueued") == 1 and game.get_event_flag("isBgStarted") == 0 then
                say("Jesteś zapisany!")
            end
        end
        
        when 20093.chat."Wypisz z BG!" begin
            bgImpv.deletePlayer()
        end
    
        -- jeśli jest zapisany, ale bg wystartowało
        when button or info begin
            if pc.getqf("isQueued") == 1 and game.get_event_flag("isBgStarted") == 1 and pc.get_map_index() != 300 then
                say("Zostaniesz przeniesiony na BG!")
                wait()
                pc.warp(83200, 0)
            elseif pc.getqf("isQueued") == 0 and game.get_event_flag("isBgStarted") == 1 then
                say("Musisz poczekać, battleground trwa!")
            else
                syschat("Coś mje tu oszukujesz!")
            end
        end
        
    
    end
end

YhNvaXz.png

Opublikowano

Nie pobiore lecz + za wstawke oraz pomysł. Mogło to by znaleść zastosowanie w turniejach PVP. Można to by było na przedziały lvl'owe podzielić

  • 3 tygodnie później...
Opublikowano

W końcu jakaś ciekawa wstawka, sam sposób napisania mi się podoba, zastosowanie można znaleźć chociazby na tej wspomnianej arenie PVP. Naprawdę fajne, lajk uczciwie zarobiony.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...